#include <iostream>
#include <cstring>
#define N 510
using namespace std;
int  sz[N][N],dp[N][N];
int main(){
    int line;
    while (cin>>line){
        memset(dp,0,N);
        for (int i = 0; i < line; ++i) {
            for (int j = 0; j < line; ++j) {
                cin>>sz[i][j];
            }

        }
        /**
         * 第一次循环,sz[i-1][j-1]都是0,方便计算当前到达sz[i][j]的最大值
         * dp[i][j]记录的是sz[i-1][j-1]中的到此最大值,所以dp大小要比sz大
         */
        for(int i = 1 ; i <= line ; i++)
        {
            for(int j = 1 ; j <=line ; j++)
            {
                dp[i][j] = max(dp[i-1][j],dp[i][j-1])+sz[i-1][j-1] ;
            }
        }
        cout<<dp[line][line];
    }
    return 0;
}